# 声明镜像来源为golang:alpine
FROM golang:alpine AS builder

# 安装必要工具
RUN apk add --no-cache git

# 声明工作目录
WORKDIR /go/src/gin-vue-admin

# 拷贝整个server项目到工作目录
COPY . .

# 初始化 Go 模块并构建静态可执行文件
RUN go env -w GO111MODULE=on \
    && go env -w GOPROXY=https://goproxy.cn,direct \
    && go mod tidy \
    && go generate \
    && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o server .

# 第二阶段构建
FROM alpine:latest

# 安装必要运行时依赖
RUN apk add --no-cache ca-certificates

# 声明工作目录
WORKDIR /go/src/gin-vue-admin

# 把/go/src/gin-vue-admin整个文件夹的文件到当前工作目录
COPY --from=0 /go/src/gin-vue-admin ./

EXPOSE 8888

# 运行打包好的二进制文件
ENTRYPOINT ["./server", "-c", "config.docker.yaml"]